Graphs in graphical computer displays may visually represent objects or data items and relationships between the objects or data items. Graph nodes typically represent the objects or data items, and connections between the graph nodes typically represent relationships between the objects or data items. For example, if graph nodes represent people, a connection between two nodes may represent a history of communication between two people. In another example, if graph nodes represent items of Extensible Markup Language (“XML”) data, a connection between two nodes may indicate that one of the data items is nested within the other data item.
Relationships between graph nodes may be directional or non-directional. Directional relationships are often indicated with an arrow along or at the end of a connection. If the graph nodes represent people, for example, an arrow pointing from a first node to a second node may indicate that the first node represents a first person who called or contacted a second person represented by the second node. If the graph nodes represent items of XML data, for example, an arrow pointing from a first node to a second node may indicate that the first node represents a parent item that contains a child item represented by the second node. Various types of relationships may be characterized as directional, depending on the implementation.
Graph nodes may be visually arranged in different levels of a graph node hierarchy. If graph nodes are organized into a hierarchy, a viewer of the graph may be able to more quickly, more easily, and more fully understand where a given object fits within a dataset and how that object relates to other objects in the dataset.
On complex graphs, depicting a straight segment between two nodes may be visually unappealing and even confusing. When the straight segment between two nodes is unappealing to a user, the user may break up the connection between the two nodes into segments or arcs that are joined at elbows or vertices. For example, two segments may be joined by an elbow to form a right angle. Similarly, a graphing application may recognize that a straight-line connection would overlap onto other graph nodes or connections. In order to avoid the overlap, the graphing application may break up the connection into segments joined at elbows.
As graphs become more complex, creating and re-arranging the graphs can be cumbersome. A complex graph may be substantially re-arranged by the user when a node is inserted into the graph or when new arrangements of the graph are discovered. Moving nodes may destroy existing connections between the nodes or render the existing connections visually unappealing or overlapping onto other nodes or connections.
The approaches described in this section are approaches that could be pursued, but not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated, it should not be assumed that any of the approaches described in this section qualify as prior art merely by virtue of their inclusion in this section.